package com.gosophia.conferenceManagement.notification.ws;

import java.util.List;

import com.gosophia.commons.exception.BusinessException;
import com.gosophia.commons.exception.ConcurrencyException;
import com.gosophia.commons.exception.ParameterException;
import com.gosophia.commons.exception.TechnicalException;
import com.gosophia.conferenceManagement.common.ws.ConferenceHandleWebService;
import com.gosophia.conferenceManagement.notification.dto.NotificationJobDataDTO;
import com.gosophia.taskManagement.dto.JobDTO;

/**
 * 会议webService接口
 * 
 * @author gaoweiguang
 * @date 2011-3-22
 */
public interface NotificationWebService extends ConferenceHandleWebService{

	/**
	 * 添加会议通知
	 * 
	 * @param notificationJobDataDTO  会议通知DTO
	 *                   notificationJobDataDTO 不能为null 
	 *                   ，notificationJobDataId  必须为null
	 */
	 public void addNotificationJobData(NotificationJobDataDTO notificationJobDataDTO) throws BusinessException;
	 /**
	  * 更新会议通知
	  * 
	  * @param notificationJobDataDTO  会议通知DTO
	  *                   notificationJobDataId  不能为null
	 * @throws BusinessException 
	  */
	 public void updateNotificationJobData(NotificationJobDataDTO notificationJobDataDTO) throws BusinessException;
	 
	 
	 /**
	   * 根据待办jobId查找上一job数据
	   * 
	   * @param jobId 不能为null
	   * @return 符合条件的job数据，如果没有返回null
	   * @throws BusinessException
	   */
	 public NotificationJobDataDTO findPreNotificationJobDataByJobId(Long jobId) throws BusinessException;
	 
	 
	 /**
	   * 根据待办jobId查找job数据
	   * 
	   * @param jobId 不能为null
	   * @return 符合条件的job数据，如果没有返回null
	   * @throws BusinessException
	   */
	 public NotificationJobDataDTO findNotificationJobDataByJobId(Long jobId) throws BusinessException;
	 
	 
	 /**
	   * 根据JobId查找某一会议下已完成的方案历史审批记录
	   * 
	   * @param jobId 不能为null
	   * @param noticeType 通知类型  "0"表示预通知，"1"表示正式通知
	   * @return
	   */
     public List<JobDTO> findFinishedNotificationApprovalHistoryRecordByJobId(
				Long jobId, String noticeType) throws BusinessException, ParameterException, ConcurrencyException,
				TechnicalException;

	 
     /**
	   * 通知流转处理
	   * @param jobId 不能为null
	   * @param operatorId 操作人id不能为null
	   * @param notificationJobDataDTO 通知DTO
	   */ 
	 public void HandleConferenceTurning(Long jobId,Long operatorId,NotificationJobDataDTO notificationJobDataDTO)throws BusinessException; 
	 
	 
	 
	 
	 
}
